package Exception;
/*
try、catch、finally用法总结:
　　1、不管有没有异常，finally中的代码都会执行

　　2、当try、catch中有return时，finally中的代码依然会继续执行

　　3、finally是在return后面的表达式运算之后执行的，此时并没有返回运算之后的值，而是把值保存起来，不管finally对该值做任何的改变，返回的值都不会改变，依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的。

　　4、finally代码中最好不要包含return，程序会提前退出，也就是说返回的值不是try或catch中的值
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("开始");

        try {
            String line1 = "";
            String line = null;
            System.out.println(line1.charAt(0));
            System.out.println(line.length());
            return;
        }catch (NullPointerException | StringIndexOutOfBoundsException e){
            System.out.println("程序出现空指针或者下表错误");
        }catch (Exception e){
            System.out.println("就是出了个问题");
        }finally {
            System.out.println("finally程序执行了");
        }
        System.out.println("程序已经解决问题");
    }
}
